UNIT HyperXCmd;

INTERFACE

CONST
  
  { result codes }
  xresSucc 	= 0;
  xresFail 	= 1;
  xresNotImp 	= 2;
  
  { request codes }
  xreqSendCardMessage	= 1;
  xreqEvalExpr		= 2;
  xreqStringLength	= 3;
  xreqStringMatch	= 4;

  xreqZeroBytes         = 6;
  xreqPasToZero		= 7;
  xreqZeroToPas		= 8;
  xreqStrToLong		= 9;
  xreqStrToNum		= 10;
  xreqStrToBool		= 11;
  xreqStrToExt		= 12;
  xreqLongToStr		= 13;
  xreqNumToStr		= 14;
  xreqNumToHex		= 15;
  xreqBoolToStr		= 16;
  xreqExtToStr		= 17;
  xreqGetGlobal		= 18;
  xreqSetGlobal		= 19;
  xreqGetFieldByName	= 20;
  xreqGetFieldByNum	= 21;
  xreqGetFieldByID	= 22;
  xreqSetFieldByName	= 23;
  xreqSetFieldByNum	= 24;
  xreqSetFieldByID	= 25;
  xreqStringEqual       = 26;
  xreqReturnToPas       = 27;
  xreqScanToReturn      = 28;
  xreqScanToZero        = 39;

TYPE

  XCmdPtr = ^XCmdBlock;
  XCmdBlock =
    RECORD
      paramCount:  INTEGER;     
      params:      ARRAY[1..16] OF Handle;
      returnValue: Handle;      
      passFlag:    BOOLEAN; 
      
      entryPoint:  ProcPtr;    { to call back to HyperCard }
      request:     INTEGER;  
      result:      INTEGER;  
      inArgs:      ARRAY[1..8] OF LongInt;
      outArgs:     ARRAY[1..4] OF LongInt;
    END;
    
END;